"The address of" the variable 'amplitude' is assigned to f_ptr. Finally, "that which is pointed to by" f_ptr (namely the value represented by amplitude) is halved and assigned back to amplitude.
Pointers are used frequently in C, mainly for two purposes: informing a function of the location of data to be accessed and traversing arrays efficiently. (Note that the former purpose essentially extends the scope* of the data. Abuse of this may produce code which is difficult to understand and to maintain.)
A special pointer, the VOID POINTER will be useful later in this document. The VOID data type is used mostly to declare the return value of functions whose return value is to be ignored. Variables cannot be declared to have this type. However, variables which are void pointers may be declared. Such variables may be assigned pointers of ANY other type: